Конфигурирование вашего приложения OX для работы с EJB3
С версии OX v3.0 JPA - это persistence engine по-умолчанию так, что вам ничего конфигурировать не нужно.
Если же вы используете OX v2.1 или v2.2, вам необходимо отредактировать файл properties/xava.properties вашего проекта в таком ключе:
# EJB3 Java Persistence API
persistenceProviderClass=org.openxava.model.impl.JPAPersistenceProvider
mapFacadeAsEJB=false
После это ваше приложение будет использовать EJB3 JPA вместо Hibernate для обеспечения постоянного хранения объектов (object persistence).
Использование EJB3 JPA в вашем коде
Вы можете использовать стандартные конструкции Java Persistence API в любой части приложения OpenXava, в том числе в калькуляторах (calculators), валидаторах (validators), действиях (actions), фильтрах (filters) и т.д.
С целью облегчить использование JPA OpenXava предоставляет класс XPersistence. К примеру, если вы хотите сохранить объект в базе данных, используя штатные возможности JPA, вам придется написать что-то вроде:
И все!
В момент, когда вы первый раз обращаетесь к XPersistence.getManager(), экземпляр manager'а создается для текущего потока, кроме того, создается транзакция JPA. При следующем обращении возвращается тот же экземпляр manager'а. В конце цикла выполнения действия (action) OpenXava автоматически выполняет commit для транзакции и закрывает manager.
Вы можете также выполнять commit тразакции в любой момент вызовом XPersistence.commit(). После этого вам необходимо выполнить XPersistence.getManager() для получения ногов экземпляра manager и инциации новой транзакции.
Дополнительная информация доступа в API документации к классу org.openxava.jpa.XPersistence.
Использование EJB3 JPA
Начиная с версии 2.1 OpenXava поддерживает EJB3.Конфигурирование вашего приложения OX для работы с EJB3
С версии OX v3.0 JPA - это persistence engine по-умолчанию так, что вам ничего конфигурировать не нужно.Если же вы используете OX v2.1 или v2.2, вам необходимо отредактировать файл properties/xava.properties вашего проекта в таком ключе:
После это ваше приложение будет использовать EJB3 JPA вместо Hibernate для обеспечения постоянного хранения объектов (object persistence).
Использование EJB3 JPA в вашем коде
Вы можете использовать стандартные конструкции Java Persistence API в любой части приложения OpenXava, в том числе в калькуляторах (calculators), валидаторах (validators), действиях (actions), фильтрах (filters) и т.д.С целью облегчить использование JPA OpenXava предоставляет класс XPersistence. К примеру, если вы хотите сохранить объект в базе данных, используя штатные возможности JPA, вам придется написать что-то вроде:
Внутри OpenXava, благодаря XPersistence, вы можете облегчить себе жизнь:
И все!
В момент, когда вы первый раз обращаетесь к XPersistence.getManager(), экземпляр manager'а создается для текущего потока, кроме того, создается транзакция JPA. При следующем обращении возвращается тот же экземпляр manager'а. В конце цикла выполнения действия (action) OpenXava автоматически выполняет commit для транзакции и закрывает manager.
Вы можете также выполнять commit тразакции в любой момент вызовом XPersistence.commit(). После этого вам необходимо выполнить XPersistence.getManager() для получения ногов экземпляра manager и инциации новой транзакции.
Дополнительная информация доступа в API документации к классу org.openxava.jpa.XPersistence.